﻿namespace CSharPro._1016;

public class Demo
{
        public static void Test01()
        {
            Console.Clear();
            try
            {
                // 接收用户输入的三个整数
                Console.WriteLine("请输入第一个整数 x:");
                int x = int.Parse(Console.ReadLine());
                
                Console.WriteLine("请输入第二个整数 y:");
                int y = int.Parse(Console.ReadLine());
                
                Console.WriteLine("请输入第三个整数 z:");
                int z = int.Parse(Console.ReadLine());
                
                // 将三个数存入数组并排序
                int[] numbers = { x, y, z };
                Array.Sort(numbers);
                
                // 输出排序结果
                Console.WriteLine("三个数由小到大的顺序是:");
                Console.WriteLine($"{numbers[0]}, {numbers[1]}, {numbers[2]}");
            }
            catch (FormatException)
            {
                Console.WriteLine("输入格式错误，请确保输入的是整数。");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"发生错误: {ex.Message}");
            }
        }
        
        public static void Test02()
        {
            int sum = 0;
            List<int> validNumbers = new List<int>();
            
            // 遍历1到100之间的所有数字
            for (int i = 1; i <= 100; i++)
            {
                // 检查是否是7的倍数
                bool isMultipleOf7 = i % 7 == 0;
                
                // 检查是否包含数字7
                bool contains7 = i.ToString().Contains("7");
                
                // 如果既不是7的倍数也不包含7，则加入结果集
                if (!isMultipleOf7 && !contains7)
                {
                    validNumbers.Add(i);
                    sum += i;
                }
            }
            
            // 打印符合条件的数字
            Console.WriteLine("1-100之间所有不是7的倍数且不包含7的数字：");
            Console.WriteLine(string.Join(", ", validNumbers));
            
            // 打印总和
            Console.WriteLine($"\n这些数字的总和是：{sum}");
        }

        public static void Test03()
        {
                Console.Clear();
                for (int i = 1; i <= 9; i++)
                {
                    for (int j = 1; j <= i; j++)
                    {
                        Console.Write($"{j}×{i}={i * j}\t");
                    }
                    Console.WriteLine();
                }
        }

        public static void Test04()
        {
            Console.Clear();
            List<int> perfectNumbers = new List<int>();
            
            for (int num = 1; num < 1000; num++)
            {
                int sum = 0;
                for (int i = 1; i < num; i++)
                {
                    if (num % i == 0)
                    {
                        sum += i;
                    }
                }
                if (sum == num)
                {
                    perfectNumbers.Add(num);
                }
            }
            
            Console.WriteLine("1000以内的完数有：");
            Console.WriteLine(string.Join(", ", perfectNumbers));
        }

        public static void Test05()
        {
            Console.Clear();
            Console.WriteLine("请输入一个正整数：");
            string input = Console.ReadLine();
            
            if (int.TryParse(input, out int num) && num > 0)
            {
                // 1. 计算位数
                int digitCount = input.Length;
                Console.WriteLine($"它是{digitCount}位数");
                
                // 2. 逆序打印各位数字
                Console.WriteLine("逆序各位数字：");
                for (int i = input.Length - 1; i >= 0; i--)
                {
                    Console.Write(input[i] + " ");
                }
            }
            else
            {
                Console.WriteLine("输入不是有效的正整数！");
            }
        }

        public static void Test06()
        {
            Console.Clear();
            Console.WriteLine("请输入菱形的行数（奇数）：");
            if (int.TryParse(Console.ReadLine(), out int rows) && rows % 2 != 0 && rows > 0)
            {
                int mid = rows / 2;
                // 上半部分（包括中间行）
                for (int i = 0; i <= mid; i++)
                {
                    for (int j = 0; j < mid - i; j++)
                    {
                        Console.Write(" ");
                    }
                    for (int j = 0; j < 2 * i + 1; j++)
                    {
                        Console.Write("*");
                    }
                    Console.WriteLine();
                }
                // 下半部分
                for (int i = mid - 1; i >= 0; i--)
                {
                    for (int j = 0; j < mid - i; j++)
                    {
                        Console.Write(" ");
                    }
                    for (int j = 0; j < 2 * i + 1; j++)
                    {
                        Console.Write("*");
                    }
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("请输入有效的奇数行数！");
            }
        }
        
    
}